Struts 2 provides tags that allow developers to dynamically generate web pages and conditionally render content. There are four main types of tags: data tags to extract data from the value stack, control flow tags to alter rendering, miscellaneous tags for functions like internationalization, and UI tags to display data. UI tags are further broken down into form tags like checkbox and file inputs, and non-form tags like components and trees. The tags automatically generate HTML using XHTML themes and make building user interfaces simple.